home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / Interfaces&Libraries / Universal / Interfaces / PInterfaces / SoundSprocket.p < prev    next >
Encoding:
Text File  |  1998-08-17  |  13.6 KB  |  278 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        SoundSprocket.p
  3.  
  4.      Contains:    Games Sprockets: SoundSprocket interfaces
  5.  
  6.      Version:    Technology:    NetSprocket 1.0
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1996-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. }
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT SoundSprocket;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __SOUNDSPROCKET__}
  27. {$SETC __SOUNDSPROCKET__ := 1}
  28.  
  29. {$I+}
  30. {$SETC SoundSprocketIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33. {$IFC UNDEFINED __MACTYPES__}
  34. {$I MacTypes.p}
  35. {$ENDC}
  36. {$IFC UNDEFINED __EVENTS__}
  37. {$I Events.p}
  38. {$ENDC}
  39. {$IFC UNDEFINED __QD3D__}
  40. {$I QD3D.p}
  41. {$ENDC}
  42. {$IFC UNDEFINED __QD3DCAMERA__}
  43. {$I QD3DCamera.p}
  44. {$ENDC}
  45.  
  46.  
  47. {$PUSH}
  48. {$ALIGN POWER}
  49. {$LibExport+}
  50.  
  51. {******************************************************************************
  52.  *    This stuff will be moved to Errors.h in a subsequent release
  53.  *****************************************************************************}
  54.  
  55. CONST
  56.     kSSpInternalErr                = -30340;
  57.     kSSpVersionErr                = -30341;
  58.     kSSpCantInstallErr            = -30342;
  59.     kSSpParallelUpVectorErr        = -30343;
  60.     kSSpScaleToZeroErr            = -30344;
  61.  
  62.  
  63. {******************************************************************************
  64.  *    SndSetInfo/SndGetInfo Messages
  65.  *****************************************************************************}
  66. {    The siSSpCPULoadLimit = '3dll' selector for SndGetInfo fills in a value of    }
  67. {    type UInt32.                                                                }
  68.  
  69.     kSSpSpeakerKind_Stereo        = 0;
  70.     kSSpSpeakerKind_Mono        = 1;
  71.     kSSpSpeakerKind_Headphones    = 2;
  72.  
  73.  
  74. {    This is the data type is used with the SndGet/SetInfo selector                }
  75. {    siSSpSpeakerSetup = '3dst'                                                    }
  76.  
  77. TYPE
  78.     SSpSpeakerSetupDataPtr = ^SSpSpeakerSetupData;
  79.     SSpSpeakerSetupData = RECORD
  80.         speakerKind:            UInt32;                                    {  Speaker configuration                 }
  81.         speakerAngle:            Single;                                    {  Angle formed by user and speakers     }
  82.         reserved0:                UInt32;                                    {  Reserved for future use -- set to 0     }
  83.         reserved1:                UInt32;                                    {  Reserved for future use -- set to 0     }
  84.     END;
  85.  
  86.  
  87. CONST
  88.     kSSpMedium_Air                = 0;
  89.     kSSpMedium_Water            = 1;
  90.  
  91.  
  92.     kSSpSourceMode_Unfiltered    = 0;                            {  No filtering applied                     }
  93.     kSSpSourceMode_Localized    = 1;                            {  Localized by source position             }
  94.     kSSpSourceMode_Ambient        = 2;                            {  Coming from all around                 }
  95.     kSSpSourceMode_Binaural        = 3;                            {  Already binaurally localized             }
  96.  
  97.  
  98.  
  99. TYPE
  100.     SSpLocationDataPtr = ^SSpLocationData;
  101.     SSpLocationData = RECORD
  102.         elevation:                Single;                                    {  Angle of the meridian -- pos is up     }
  103.         azimuth:                Single;                                    {  Angle of the parallel -- pos is left     }
  104.         distance:                Single;                                    {  Distance between source and listener     }
  105.         projectionAngle:        Single;                                    {  Cos(angle) between cone and listener     }
  106.         sourceVelocity:            Single;                                    {  Speed of source toward the listener     }
  107.         listenerVelocity:        Single;                                    { Speed of listener toward the source     }
  108.     END;
  109.  
  110.     SSpVirtualSourceDataPtr = ^SSpVirtualSourceData;
  111.     SSpVirtualSourceData = RECORD
  112.         attenuation:            Single;                                    {  Attenuation factor                     }
  113.         location:                SSpLocationData;                        {  Location of virtual source             }
  114.     END;
  115.  
  116. {    This is the data type is used with the SndGet/SetInfo selector                }
  117. {    siSSpLocalization = '3dif'                                                    }
  118.     SSpLocalizationDataPtr = ^SSpLocalizationData;
  119.     SSpLocalizationData = RECORD
  120.         cpuLoad:                UInt32;                                    {  CPU load vs. quality -- 0 is best     }
  121.         medium:                    UInt32;                                    {  Medium for sound propagation             }
  122.         humidity:                Single;                                    {  Humidity when medium is air             }
  123.         roomSize:                Single;                                    {  Reverb model -- distance bet. walls     }
  124.         roomReflectivity:        Single;                                    { Reverb model -- bounce attenuation     }
  125.         reverbAttenuation:        Single;                                    { Reverb model -- mix level             }
  126.         sourceMode:                UInt32;                                    {  Type of filtering to apply             }
  127.         referenceDistance:        Single;                                    { Nominal distance for recording         }
  128.         coneAngleCos:            Single;                                    {  Cos(angle/2) of attenuation cone         }
  129.         coneAttenuation:        Single;                                    {  Attenuation outside the cone             }
  130.         currentLocation:        SSpLocationData;                        {  Location of the sound                  }
  131.         reserved0:                UInt32;                                    {  Reserved for future use -- set to 0     }
  132.         reserved1:                UInt32;                                    {  Reserved for future use -- set to 0     }
  133.         reserved2:                UInt32;                                    {  Reserved for future use -- set to 0     }
  134.         reserved3:                UInt32;                                    {  Reserved for future use -- set to 0     }
  135.         virtualSourceCount:        UInt32;                                    { Number of reflections                 }
  136.         virtualSource:            ARRAY [0..3] OF SSpVirtualSourceData;    { The reflections                         }
  137.     END;
  138.  
  139. {$IFC TARGET_CPU_PPC }
  140. {$IFC TYPED_FUNCTION_POINTERS}
  141.     SSpEventProcPtr = FUNCTION(VAR inEvent: EventRecord): BOOLEAN; C;
  142. {$ELSEC}
  143.     SSpEventProcPtr = ProcPtr;
  144. {$ENDC}
  145.  
  146. {******************************************************************************
  147.  *    Global functions
  148.  *****************************************************************************}
  149. FUNCTION SSpConfigureSpeakerSetup(inEventProcPtr: SSpEventProcPtr): OSStatus; C;
  150. FUNCTION SSpGetCPULoadLimit(VAR outCPULoadLimit: UInt32): OSStatus; C;
  151.  
  152. {******************************************************************************
  153.  *    Routines for Maniulating Listeners
  154.  *****************************************************************************}
  155.  
  156. TYPE
  157.     SSpListenerReference = ^LONGINT;
  158. FUNCTION SSpListener_New(VAR outListenerReference: SSpListenerReference): OSStatus; C;
  159. FUNCTION SSpListener_Dispose(inListenerReference: SSpListenerReference): OSStatus; C;
  160. FUNCTION SSpListener_SetTransform(inListenerReference: SSpListenerReference; {CONST}VAR inTransform: TQ3Matrix4x4): OSStatus; C;
  161. FUNCTION SSpListener_GetTransform(inListenerReference: SSpListenerReference; VAR outTransform: TQ3Matrix4x4): OSStatus; C;
  162. FUNCTION SSpListener_SetPosition(inListenerReference: SSpListenerReference; {CONST}VAR inPosition: TQ3Point3D): OSStatus; C;
  163. FUNCTION SSpListener_GetPosition(inListenerReference: SSpListenerReference; VAR outPosition: TQ3Point3D): OSStatus; C;
  164. FUNCTION SSpListener_SetOrientation(inListenerReference: SSpListenerReference; {CONST}VAR inOrientation: TQ3Vector3D): OSStatus; C;
  165. FUNCTION SSpListener_GetOrientation(inListenerReference: SSpListenerReference; VAR outOrientation: TQ3Vector3D): OSStatus; C;
  166. FUNCTION SSpListener_SetUpVector(inListenerReference: SSpListenerReference; {CONST}VAR inUpVector: TQ3Vector3D): OSStatus; C;
  167. FUNCTION SSpListener_GetUpVector(inListenerReference: SSpListenerReference; VAR outUpVector: TQ3Vector3D): OSStatus; C;
  168. FUNCTION SSpListener_SetCameraPlacement(inListenerReference: SSpListenerReference; {CONST}VAR inCameraPlacement: TQ3CameraPlacement): OSStatus; C;
  169. FUNCTION SSpListener_GetCameraPlacement(inListenerReference: SSpListenerReference; VAR outCameraPlacement: TQ3CameraPlacement): OSStatus; C;
  170. FUNCTION SSpListener_SetVelocity(inListenerReference: SSpListenerReference; {CONST}VAR inVelocity: TQ3Vector3D): OSStatus; C;
  171. FUNCTION SSpListener_GetVelocity(inListenerReference: SSpListenerReference; VAR outVelocity: TQ3Vector3D): OSStatus; C;
  172. FUNCTION SSpListener_GetActualVelocity(inListenerReference: SSpListenerReference; VAR outVelocity: TQ3Vector3D): OSStatus; C;
  173. FUNCTION SSpListener_SetMedium(inListenerReference: SSpListenerReference; inMedium: UInt32; inHumidity: Single): OSStatus; C;
  174. FUNCTION SSpListener_GetMedium(inListenerReference: SSpListenerReference; VAR outMedium: UInt32; VAR outHumidity: Single): OSStatus; C;
  175. FUNCTION SSpListener_SetReverb(inListenerReference: SSpListenerReference; inRoomSize: Single; inRoomReflectivity: Single; inReverbAttenuation: Single): OSStatus; C;
  176. FUNCTION SSpListener_GetReverb(inListenerReference: SSpListenerReference; VAR outRoomSize: Single; VAR outRoomReflectivity: Single; VAR outReverbAttenuation: Single): OSStatus; C;
  177. FUNCTION SSpListener_SetMetersPerUnit(inListenerReference: SSpListenerReference; inMetersPerUnit: Single): OSStatus; C;
  178. FUNCTION SSpListener_GetMetersPerUnit(inListenerReference: SSpListenerReference; VAR outMetersPerUnit: Single): OSStatus; C;
  179.  
  180. {******************************************************************************
  181.  *    Routines for Manipulating Sources
  182.  *****************************************************************************}
  183.  
  184. TYPE
  185.     SSpSourceReference = ^LONGINT;
  186. FUNCTION SSpSource_New(VAR outSourceReference: SSpSourceReference): OSStatus; C;
  187. FUNCTION SSpSource_Dispose(inSourceReference: SSpSourceReference): OSStatus; C;
  188. FUNCTION SSpSource_CalcLocalization(inSourceReference: SSpSourceReference; inListenerReference: SSpListenerReference; VAR out3DInfo: SSpLocalizationData): OSStatus; C;
  189. FUNCTION SSpSource_SetTransform(inSourceReference: SSpSourceReference; {CONST}VAR inTransform: TQ3Matrix4x4): OSStatus; C;
  190. FUNCTION SSpSource_GetTransform(inSourceReference: SSpSourceReference; VAR outTransform: TQ3Matrix4x4): OSStatus; C;
  191. FUNCTION SSpSource_SetPosition(inSourceReference: SSpSourceReference; {CONST}VAR inPosition: TQ3Point3D): OSStatus; C;
  192. FUNCTION SSpSource_GetPosition(inSourceReference: SSpSourceReference; VAR outPosition: TQ3Point3D): OSStatus; C;
  193. FUNCTION SSpSource_SetOrientation(inSourceReference: SSpSourceReference; {CONST}VAR inOrientation: TQ3Vector3D): OSStatus; C;
  194. FUNCTION SSpSource_GetOrientation(inSourceReference: SSpSourceReference; VAR outOrientation: TQ3Vector3D): OSStatus; C;
  195. FUNCTION SSpSource_SetUpVector(inSourceReference: SSpSourceReference; {CONST}VAR inUpVector: TQ3Vector3D): OSStatus; C;
  196. FUNCTION SSpSource_GetUpVector(inSourceReference: SSpSourceReference; VAR outUpVector: TQ3Vector3D): OSStatus; C;
  197. FUNCTION SSpSource_SetCameraPlacement(inSourceReference: SSpSourceReference; {CONST}VAR inCameraPlacement: TQ3CameraPlacement): OSStatus; C;
  198. FUNCTION SSpSource_GetCameraPlacement(inSourceReference: SSpSourceReference; VAR outCameraPlacement: TQ3CameraPlacement): OSStatus; C;
  199. FUNCTION SSpSource_SetVelocity(inSourceReference: SSpSourceReference; {CONST}VAR inVelocity: TQ3Vector3D): OSStatus; C;
  200. FUNCTION SSpSource_GetVelocity(inSourceReference: SSpSourceReference; VAR outVelocity: TQ3Vector3D): OSStatus; C;
  201. FUNCTION SSpSource_GetActualVelocity(inSourceReference: SSpSourceReference; VAR outVelocity: TQ3Vector3D): OSStatus; C;
  202. FUNCTION SSpSource_SetCPULoad(inSourceReference: SSpSourceReference; inCPULoad: UInt32): OSStatus; C;
  203. FUNCTION SSpSource_GetCPULoad(inSourceReference: SSpSourceReference; VAR outCPULoad: UInt32): OSStatus; C;
  204. FUNCTION SSpSource_SetMode(inSourceReference: SSpSourceReference; inMode: UInt32): OSStatus; C;
  205. FUNCTION SSpSource_GetMode(inSourceReference: SSpSourceReference; VAR outMode: UInt32): OSStatus; C;
  206. FUNCTION SSpSource_SetReferenceDistance(inSourceReference: SSpSourceReference; inReferenceDistance: Single): OSStatus; C;
  207. FUNCTION SSpSource_GetReferenceDistance(inSourceReference: SSpSourceReference; VAR outReferenceDistance: Single): OSStatus; C;
  208. FUNCTION SSpSource_SetSize(inSourceReference: SSpSourceReference; inLength: Single; inWidth: Single; inHeight: Single): OSStatus; C;
  209. FUNCTION SSpSource_GetSize(inSourceReference: SSpSourceReference; VAR outLength: Single; VAR outWidth: Single; VAR outHeight: Single): OSStatus; C;
  210. FUNCTION SSpSource_SetAngularAttenuation(inSourceReference: SSpSourceReference; inConeAngle: Single; inConeAttenuation: Single): OSStatus; C;
  211. FUNCTION SSpSource_GetAngularAttenuation(inSourceReference: SSpSourceReference; VAR outConeAngle: Single; VAR outConeAttenuation: Single): OSStatus; C;
  212. {$ENDC}  {TARGET_CPU_PPC}
  213.  
  214.  
  215. {******************************************************************************
  216.  *    MORE LATE-BREAKING NEWS
  217.  *
  218.  *    The SndGetInfo selector siSSpFilterVersion and datatype SSpFilterVersionData
  219.  *    have been removed in favor of an alternate way of accessing filter version
  220.  *    information.  The following function may be used for this purpose.
  221.  *******************************************************************************
  222. // **************************** GetSSpFilterVersion ****************************
  223. // Finds the manufacturer and version number of the SoundSprocket filter that
  224. // may be installed.  inManufacturer should be the manufacturer code specified
  225. // at the installation time, which may be zero to allow any manufacturer.
  226. // If no error is encountered, outManufacturer is set to the actual manufacturer
  227. // code and outMajorVersion and outMinorVersion are set to the component
  228. // specification level and manufacturer's implementation revision, respectively.
  229. OSStatus GetSSpFilterVersion(
  230.     OSType                    inManufacturer,
  231.     OSType*                    outManufacturer,
  232.     UInt32*                    outMajorVersion,
  233.     UInt32*                    outMinorVersion)
  234. (
  235.     OSStatus                err;
  236.     ComponentDescription    description;
  237.     Component                componentRef;
  238.     UInt32                    vers;
  239.     
  240.     // Set up the component description
  241.     description.componentType            = kSoundEffectsType;
  242.     description.componentSubType        = kSSpLocalizationSubType;
  243.     description.componentManufacturer    = inManufacturer;
  244.     description.componentFlags            = 0;        
  245.     description.componentFlagsMask        = 0;    
  246.     
  247.     // Find a component matching the description
  248.     componentRef = FindNextComponent(nil, &description);
  249.     if (componentRef == nil)  return couldntGetRequiredComponent;
  250.     
  251.     // Get the component description (for the manufacturer code)
  252.     err = GetComponentInfo(componentRef, &description, nil, nil, nil);
  253.     if (err != noErr)  return err;
  254.     
  255.     // Get the version composite
  256.     vers = (UInt32) GetComponentVersion((ComponentInstance) componentRef);
  257.     
  258.     // Return the results
  259.     *outManufacturer = description.componentManufacturer;
  260.     *outMajorVersion = HiWord(vers);
  261.     *outMinorVersion = LoWord(vers);
  262.     
  263.     return noErr;
  264. )
  265. ******************************************************************************}
  266.  
  267.  
  268. {$ALIGN RESET}
  269. {$POP}
  270.  
  271. {$SETC UsingIncludes := SoundSprocketIncludes}
  272.  
  273. {$ENDC} {__SOUNDSPROCKET__}
  274.  
  275. {$IFC NOT UsingIncludes}
  276.  END.
  277. {$ENDC}
  278.